package 二叉树;

public class No404左叶子之和 {

    /**
     *计算给定二叉树的所有左叶子之和。
     *
     * 示例：
     *
     *     3
     *    / \
     *   9  20
     *     /  \
     *    15   7
     *
     * 在这个二叉树中，有两个左叶子，分别是 9 和 15，所以返回 24。
     */

    int sum=0;

    //最底层的左边节点
    public int sumOfLeftLeaves(TreeNode root) {
        if(root==null)
            return 0;
        dg(root.right,false);
        return sum;
    }

    private void dg(TreeNode node,boolean flag){
        if(node==null)
            return;
        if(node.left==null&&node.right==null&&flag)
            sum+=node.val;
        dg(node.left,true);
        dg(node.right,false);
    }

}
